package com.jinke.api.modules.app.model;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jinke.api.modules.app.enums.OrderType;
import com.jinke.api.modules.app.enums.ValidateStatus;
import com.jinke.api.modules.base.model.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 承运商平台
 * </p>
 *
 * @author macro
 * @since 2024-01-15
 */
@Getter
@Setter
@ApiModel(value = "Order对象", description = "承运商平台")
@TableName("user_order")
public class Order extends BaseEntity implements Serializable {

    @ApiModelProperty("用户ID")
    private Integer userId;
    @TableField(value = "count(*)",select = false,insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER,whereStrategy =FieldStrategy.NEVER )
    private  Integer count;

    @ApiModelProperty("国家代码")
    private String fromCountryCode;

    @ApiModelProperty("州代码，对于美国和加拿大的寄件，大多数承运商只接受两字符的州缩写")
    private String fromStateCode;

    @ApiModelProperty("城市")
    private String fromCity;

    private String fromAddressLine1;

    private String fromAddressLine2;

    @ApiModelProperty("邮政编码")
    private String fromZipCode;

    @ApiModelProperty("个人姓名")
    private String fromPersonName;

    @ApiModelProperty("公司名称")
    private String fromCompany;

    @ApiModelProperty("地址所在的州或省的名称或代码")
    private String fromState;

    @ApiModelProperty("手机")
    private String fromPhone;

    @ApiModelProperty(" 联系人或组织的电子邮件")
    private String fromEmail;

    @ApiModelProperty("国家代码")
    private String toCountryCode;

    @ApiModelProperty("州代码，对于美国和加拿大的寄件，大多数承运商只接受两字符的州缩写")
    private String toStateCode;

    @ApiModelProperty("城市")
    private String toCity;

    private String toAddressLine1;

    private String toAddressLine2;

    @ApiModelProperty("邮政编码")
    private String toZipCode;

    @ApiModelProperty("个人姓名")
    private String toPersonName;

    @ApiModelProperty("公司名称")
    private String toCompany;

    @ApiModelProperty("地址所在的州或省的名称或代码")
    private String toState;

    @ApiModelProperty("手机")
    private String toPhone;

    @ApiModelProperty(" 联系人或组织的电子邮件")
    private String toEmail;

    @ApiModelProperty("usps,ups,fedex")
    private String carrierCode;

    @ApiModelProperty("服务编码")
    private String serviceCode;

    @ApiModelProperty("发货日期")
    private LocalDateTime shipDate;

    @ApiModelProperty("标签的大小。1代表64，2代表8.511。")
    private Integer labelSize;

    @ApiModelProperty("订单号，如果没有提供采用默认")
    private String orderNo;

    @ApiModelProperty("平台生成的订单号")
    private String platformNo;

    @ApiModelProperty("	仅适用于ITN。值为字符串类型A（申请ITN）;D（取消ITN）;")
    private String actionCode;

    @ApiModelProperty("只适用于取消ITN")
    private String aesUid;
    @ApiModelProperty("是否需要星期六送货")
    private Integer isstd;

    @ApiModelProperty("要求标准或成人签名确认")
    private Integer signatureOption;

    @ApiModelProperty("关税和税款支付类型。值为INT类型1（收件人）;2（发件人）")
    private Integer tariffPayType;

    @ApiModelProperty("打印在运输标签上的可选文本")
    private String reference2;

    @ApiModelProperty("打印在运输标签上的可选文本")
    private String reference;

    @ApiModelProperty("EIN/SSN。需要报关或申请ITN。")
    private String einNumber;

    @ApiModelProperty("最终收货人类型。值为INT类型1（直接消费者）;2（政府实体）;3（其他/未知）;4（经销商）")
    private Integer consigneeType;

    @ApiModelProperty("值为电池类型 1 仅限电池或电池组（ICAO/ IATA UN3480、PI965、第 II 部分）；2 仅限电池或电池组（ICAO/IATA UN3090、PI968、第 II 部分）；3 与设备包装在一起（ICAO/IATA UN3481、PI966、第 II 部分);4 与设备一起包装(ICAO / IATA UN3091, PI969,第 II 部分);5 包含在设备中(ICAO / IATA UN3481, PI967,第 II 部分);6 包含在设备中(ICAO / IATA UN3091, PI970,第 II 部分) ）")
    private Integer batteryType;

    @ApiModelProperty("费率")
    private BigDecimal rate;
    @ApiModelProperty("1:手动创建，2：批量导入，3：API")
    private OrderType orderType;

    @ApiModelProperty("objectId")
    private String objectId;
    @ApiModelProperty("pdfUrl")
    private String pdfUrl;
    @ApiModelProperty("原始费用")
    private BigDecimal originFee;

    @ApiModelProperty("1.已收到，2.传输中，3.已交付，4.已作废，5.失败")
    private Integer status;

    @ApiModelProperty("批次号 默认为导入文件名")
    private String batchNo;

    @ApiModelProperty("错误信息")
    private String errMsg;
    @ApiModelProperty("销售ID")
    private Integer sellerId;
    @ApiModelProperty("渠道ID")
    private Integer channelId;
    @ApiModelProperty("审核信息")
    private String auditInfo;
    @ApiModelProperty("面单创建时间")
    private LocalDateTime createTime;
    @ApiModelProperty("0:未验证，1：住宅2：非住宅")
    private ValidateStatus validateStatus;
    @ApiModelProperty(value = "扣除保证金")
    private BigDecimal earnest;
    @ApiModelProperty(value = "保证金释放时间")
    private LocalDateTime earnestTime;

    @ApiModelProperty(value = "订单取消申请/作废时间")
    private LocalDateTime cancelTime;
    @ApiModelProperty(value = "审核人")
    private String auditorBy;
    @ApiModelProperty(value = "审核时间")
    private LocalDateTime auditorTime;

    @ApiModelProperty(value = "补扣金额，默认值为0")
    private BigDecimal billed;

}
